package projetopm.unidades;

/**
 *
 * @author Carlos Alberto
 */
public class Trapezio {

    private int baseA, baseB, altura;

    private void validarComprimento(int comprimento) throws NumberFormatException {
        if (comprimento <= 0) {
            throw new NumberFormatException(
                    "Um comprimento não pode ser negativo ou igual a zero: "
                    + comprimento);
        }
    }

    private void validarTrapezio() throws NumberFormatException {
        if (baseA >= baseB) {
            throw new NumberFormatException(
                    "A baseA tem que ser menor que a baseB: baseA = "
                    + baseA + "  baseB = " + baseB);
        }
    }

    public Trapezio(int baseA, int baseB, int altura) throws NumberFormatException {
        try {
            validarComprimento(baseA);
            validarComprimento(baseB);
            validarComprimento(altura);
        } catch (NumberFormatException nfe) {
            throw nfe;
        }

        try {
            validarTrapezio();
        } catch (NumberFormatException nfe) {
            throw nfe;
        }

        this.baseA = baseA;
        this.baseB = baseB;
        this.altura = altura;
    }

    public int getBaseA() {
        return baseA;
    }

    public void setBaseA(int baseA) throws NumberFormatException {
        try {
            validarComprimento(baseA);
        } catch (NumberFormatException nfe) {
            throw nfe;
        }

        try {
            validarTrapezio();
        } catch (NumberFormatException nfe) {
            throw nfe;
        }

        this.baseA = baseA;
    }

    public int getBaseB() {
        return baseB;
    }

    public void setBaseB(int baseB) throws NumberFormatException {
        try {
            validarComprimento(baseB);
        } catch (NumberFormatException nfe) {
            throw nfe;
        }

        try {
            validarTrapezio();
        } catch (NumberFormatException nfe) {
            throw nfe;
        }

        this.baseB = baseB;
    }

    public int getAltura() {
        return altura;
    }

    public void setAltura(int altura) throws NumberFormatException {
        try {
            validarComprimento(altura);
        } catch (NumberFormatException nfe) {
            throw nfe;
        }

        this.altura = altura;
    }

    public int getPerimetro() {
        return (baseA + baseB + (altura * 2));
    }

    public int getArea() {
        return (((baseB + baseA) * altura) / 2);
    }
}
